'''

某列的列名称换成其它列
'''

import os
import pandas as pd
import shutil


def modify_csv_columns(source_folder, target_folder, old_col_name, new_col_name):
    """
    修改源文件夹中所有子文件夹内CSV文件的指定列名，并保存到目标文件夹

    参数:
    source_folder: 包含子文件夹的源文件夹路径
    target_folder: 目标文件夹路径（将在此创建相同结构）
    old_col_name: 需要修改的原始列名（中文）
    new_col_name: 新的列名（中文）
    """

    # 创建目标文件夹（如果不存在）
    if not os.path.exists(target_folder):
        os.makedirs(target_folder)

    # 遍历源文件夹中的所有子文件夹
    for subdir_name in os.listdir(source_folder):
        subdir_path = os.path.join(source_folder, subdir_name)

        # 确保是文件夹
        if os.path.isdir(subdir_path):
            print(f"处理子文件夹: {subdir_name}")

            # 在目标文件夹中创建对应的子文件夹
            target_subdir = os.path.join(target_folder, subdir_name)
            if not os.path.exists(target_subdir):
                os.makedirs(target_subdir)

            # 遍历子文件夹中的文件
            for filename in os.listdir(subdir_path):
                if filename.endswith('.csv'):
                    csv_path = os.path.join(subdir_path, filename)
                    target_csv_path = os.path.join(target_subdir, filename)

                    try:
                        # 读取CSV文件（使用指定编码）
                        df = pd.read_csv(csv_path, encoding='utf_8_sig')

                        # 检查列名是否存在
                        if old_col_name in df.columns:
                            # 重命名列
                            df.rename(columns={old_col_name: new_col_name}, inplace=True)

                            # 保存修改后的CSV
                            df.to_csv(target_csv_path, index=False, encoding='utf_8_sig')
                            print(f"  成功处理: {filename} | 修改列: {old_col_name} -> {new_col_name}")
                        else:
                            # 如果列不存在，复制原始文件并警告
                            shutil.copy2(csv_path, target_csv_path)
                            print(f"  警告: {filename} 中不存在列 '{old_col_name}'，已复制原始文件")

                    except Exception as e:
                        print(f"  处理失败: {filename} | 错误: {str(e)}")
                        # 出错时复制原始文件到目标位置
                        shutil.copy2(csv_path, target_csv_path)



# 配置参数（根据实际情况修改）
SOURCE_FOLDER = r"D:\AAAAA\out\2023-2024"  # 源文件夹路径
TARGET_FOLDER = r"D:\AAAAA\2023-2024"  # 目标文件夹路径
OLD_COL_NAME = "发电机转速.1"  # 需要修改的原始列名（中文）
NEW_COL_NAME = "发电机转速"  # 新的列名（中文）

    # 执行修改操作
modify_csv_columns(SOURCE_FOLDER, TARGET_FOLDER, OLD_COL_NAME, NEW_COL_NAME)
print("\n处理完成！请检查目标文件夹:", os.path.abspath(TARGET_FOLDER))